package cn.itsource.finaldemo;

/**
 *	final:
 *		1. 概念：表示最终的，是修饰符，被其修饰的成员，一旦赋值后，就不能修改了
 *
 *		2. 作用：修饰成员变量是常量，可以利用Java中的内联机制，提高效率。可以避免不想被修改的成员被他人修改。
 *		
 *		3. 修饰成员：
 *				1. 能修饰：
 *					外部类：被其修饰的外部类，叫太监类,不能被继承
 *					（私有化）实例变量：必须是在声明的同时直接赋值或者在每一个构造方法中赋值或者是在静态代码块中赋值
 *					类变量：必须是在声明的同时直接赋值。(原因是类加载的时候，就必须要有值)				
 *					(私有化)实例方法：太监 方法不能被重写					
 *					类方法：太监 方法不能被重写					
 *					内部类：
 *					局部变量：一旦赋值就不能修改，必须是在使用之前就赋值
 *
 *				2. 不能修饰：
 *					构造方法
 *		4. 使用场景：参考作用
 */	
public class Final {
	final int a;
	static final int B = 2;
	private final int c = 3;
	int d;
	
	public Final() {
		this.a = 1;
	}
	
	public Final(int a) {
		this.a = 2;
	}
	
	public final void test1() {
		System.out.println("test1");
	}
	public static final void test2() {
		System.out.println("test2");
	}
	
	/**
	 * 私有化的实例方法，被final修饰后，只能在当前类中使用
	 */
	private final  void test3() {
		System.out.println("test3");
	}
	
	final class Inner{
		
	}
}
